<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use DB;
use Crypt;
class UserController extends Controller
{

/*****************添加用户列表*******************/
    public function add()
    {
    	return view('admin.user.add');
    }

/*****************添加用户验证*******************/
    public function insert(Request $request)
    {
        /*****************判断用户是否合法*******************/
    	$this -> validate($request,[
			'name' => 'required',
			'password' => 'required',
			'repassword' => 'required|same:password',
			'email' => 'required|email',
			'phone' => 'required|max:11|min:11',
		],[
			'name.required' => '用户名不能为空',
			'password.required' => '密码不能为空',
			'repassword.required' => '确认密码不能为空',
			'repassword.same' => '两次密码不一致',
			'email.required' => '邮箱不能为空',
			'email.email' => '邮箱格式不正确',
			'phone.required' => '手机号不能为空',
			'phone.max' => '手机号必须是11位',		
			'phone.min' => '手机号必须是11位',			
		]);

        /*****************剔除字段*******************/
		$data = $request -> except('_token', 'repassword');

        /*****************密码加密*******************/
		$data['password'] = Crypt::encrypt($data['password']);

        /*****************随机数*******************/
		$data['remember_token'] = str_random(70);

        /*****************获取当前时间戳,并且转换为2016-04-15 12:10:34格式*******************/
		$time = date("Y-m-d H:i:s");

        /*****************把当前时间存入字段*******************/
		$data['created_at'] = $time;

        /*****************把当前时间存入字段*******************/
		$data['updated_at'] = $time;

        /*****************执行添加命令*******************/
		$res = DB::table('user') -> insert($data);
		if($res)
		{
			return redirect('/admin/user/index') -> with(['info' => '添加成功']);
		}else{
			return redirect('/admin/user/add') -> with(['info' => '添加失败']);
		}
    }

/*****************用户列表*******************/
    public function index(Request $request)
    {

        /*****************用户查询条数*******************/
    	$num = $request -> input('num',10);

        /*****************执行查询user表*******************/
    	$data = DB::table('user') 
    	-> where(function($query) use ($request)
    	{
    		$query -> where('name', 'like', '%'.$request -> input('keyword').'%');
    	})
    	-> paginate($num);
        // dd($data);
        /*****************返回查询结果集*******************/
    	return view('admin.user.index',['data' => $data,'request' => $request -> all()]);
    }

    // 编辑
    public function edit($id, $page, $num = 10 , $keyword = null)
    {
        /*****************执行查询命令*******************/
    	$data = DB::table('user') -> where('id', $id) -> first();

        // 把值存到数组中
        $url['page'] = $page;
        $url['num'] = $num;
        $url['keyword'] = $keyword;
        /*****************把查出的数据DATA和url数组 传到admin.user.edit去*******************/
    	return view('admin.user.edit',['data' => $data],['url' => $url]);
    }

/*****************更新*******************/
    public function update(Request $request)
    {
        /*****************判断更新是否合法*******************/
    	$this -> validate($request,[
			'name' => 'required',
			'email' => 'required|email',
			'phone' => 'required|max:11|min:11',
		],[
			'name.required' => '用户名不能为空',
			'email.required' => '邮箱不能为空',
			'email.email' => '邮箱格式不正确',
			'phone.required' => '手机号不能为空',
			'phone.max' => '手机号必须是11位',		
			'phone.min' => '手机号必须是11位',			
		]);
        // dd($request);
        /*****************剔除_token和id字段*******************/
    	$data = $request -> except('_token','id','page','keyword','num');
    	$data['updated_at'] = date('Y-m-d H:i:s');
        // dd($request);
        /*****************执行更新*******************/
    	$res = DB::table('user') -> where('id', $request -> input('id')) -> update($data);
    	if($res)
    	{
        
            // dd($request);

    		 return redirect('/admin/user/index'.'?page='.$request -> input('page').'&num='.$request -> input('num').'&keyword='.$request -> input('name')) -> with(['info' => '更新成功']);
    	}else{
            // dd($request);
            
    		return back() -> with(['info' => '更新失败']);
   	 	}
   	}

/*****************删除AJAX事件处理*******************/
    public function delete(Request $request)
    {

        /*****************获取ID*******************/
        $id = $request -> input('id');

        /*****************获取搜索的值*******************/
        $keyword = $request -> input('keyword');

        /*****************获取当前选择显示的条数*******************/
        $num1 = $request -> input('num');

        /*****************获取当前选择的页号*******************/
        // $page = $request -> input('page');

        /*****************根据ID删除数据*******************/
        $res = DB::table('user') -> delete($id);


        /*****************更新查询条数*******************/
            // 从查多少从哪个数值开始查 
        $num = $num1.','.$num1;

        /*****************执行查询user表*******************/
        $data = DB::table('user') 
        -> where(function($query) use ($request)
        {
            $query -> where('name', 'like', '%'.$request -> input('keyword').'%');
        })
        -> paginate($num);

        /*****************返回查询结果集*******************/
        return response() -> json($data -> all());
    }

/*****************ajax状态*******************/
    public function ajaxUpdate(Request $request)
    {

        /*****************获取ID*******************/
        $id = $request -> input('id');

        /*****************根据ID查询数据*******************/
        $data = DB::table('user') -> where('id', $id) -> first();

        /*****************判断当前是什么状态*******************/
        if($data -> status == 0)
        {

            /*****************更换状态*******************/
            $res = DB::table('user') -> where('id',$id) -> update(['status' => '1']);
            if($res)
            {

                /*******0为修改成功*******/
                return response() -> json(0);
            }else{

                /*******1为修改失败*******/
                return response() -> json(1);
            }
        }else{

            /*****************更换状态*******************/
            $res = DB::table('user') -> where('id',$id) -> update(['status' => '0']);
            if($res)
            {

                /*******0为修改成功*******/
                return response() -> json(2);
            }else{

                /*******1为修改失败*******/
                return response() -> json(3);
            }
        }
    }
}
